package library.frame;

import library.logic.Book;

import javax.swing.table.AbstractTableModel;
import java.util.Vector;

/**
 * User: RockCrazy
 * Date: 11.01.12
 * Time: 20:43
 */
public class BookTableModel extends AbstractTableModel
{
	private Vector books;

	/**
	 *
	 * @param books
	 */
	public BookTableModel(Vector books)
	{
		this.books = books;
	}

	/**
	 * Возвращаем книгу по номеру индекса
	 * @param rowIndex
	 * @return
	 */
	public Book getBook(int rowIndex)
	{
		if (books != null)
		{
			if (rowIndex < books.size() && rowIndex >= 0)
			{
				return (Book) books.get(rowIndex);
			}
		}
		return null;
	}

	/**
	 * Количество записей
	 * @return
	 */
	public int getRowCount()
	{
		if (books != null)
		{
			return books.size();
		}
		return 0;
	}

	/**
	 * Количество столбов
	 * @return
	 */
	public int getColumnCount()
	{
		//return 15;
		return 6;
	}

	/**
	 * Возвращаем название столбцов таблицы
	 * @param column
	 * @return
	 */
	public String getColumnName(int column)
	{
		String[] colNames = {"№ пп", "Название", "Автор", "Год издания", "Полка", "Наличие"};
		//String[] colNames = {"№ пп", "Название", "Автор", "Издатель", "Колво издано", "Год издания", "Колво страниц",
		  //                   "Цена", "Тема ID", "Наличие", "Дата поступ", "Букв код", "Полка", "Примечание",
		    //                 "Оглавление", "Тэги"};
		return colNames[column];
	}

	/**
	 * Параметр редактирования в таблице
	 * @param row
	 * @param col
	 * @return
	 */
	public boolean isCellEditable(int row, int col)
	{
		if (col < 1)
		{
			return false;
		} else
		{
			return true;
		}
	}

	public Object getValueAt(int rowIndex, int columnIndex)
	{
		if (books != null)
		{
			// Получаем из вектора книг
			Book book = (Book) books.get(rowIndex);
			// В зависимости от колонки возвращаем ID, Название, Автор, Издатель, Колво экз,
			// Год издания, Колво страниц, Цена, ID Темы, Наличие, Дата прихода, Букв код,
			// Полка, Прим, Оглавл, Тэги
			switch (columnIndex)
			{
				case 0:
					return book.getBookId();
				case 1:
					return book.getBookName();
				case 2:
					return book.getAuthor();
				//case 3:
				//	return book.getIzdatel();
				//case 4:
				//	return book.getNumIzdan();
				case 3:
					return book.getYearIzdan();
				//case 6:
				//	return book.getKolvoStr();
				//case 7:
				//	return book.getPrice();
				//case 8:
				//	return book.getTemaId();
				case 4:
					return book.getPolka();
				case 5:
					return book.isExist();
				//case 10:
				//	return book.getDatePrihod();
				//case 11:
				//	return book.getLetterCode();
				//case 12:
				//	return book.getPolka();
				//case 13:
				//	return book.getPrim();
				//case 14:
				//	return book.getOglav();
				//case 15:
				//	return book.getTag();
			}
		}
		return null;
	}
}
